/**
 * 日本旅行实用英语指南 - 主脚本
 * 
 * 包含页面交互、导航和搜索功能
 */

document.addEventListener('DOMContentLoaded', function() {
    // 初始化标签页功能
    initTabs();
    
    // 初始化搜索功能
    initSearch();
    
    // 初始化返回顶部按钮
    initBackToTop();
    
    // 初始化场景图表
    initSceneCharts();
    
    // 设置页面生成时间
    updateGenerationTime();
});

/**
 * 初始化标签页切换功能
 */
function initTabs() {
    const tabs = document.querySelectorAll('.nav-tabs a');
    const contentSections = document.querySelectorAll('.content-section');
    
    // 在多页面结构中，不需要隐藏内容区域，每个页面只显示自己的内容
    // 只需要处理当前页面的激活状态
    
    // 添加点击事件 - 在多页面结构中，点击事件由浏览器处理页面跳转
    // 这里只需要确保当前页面的导航项处于激活状态
    const currentPath = window.location.pathname;
    const currentPage = currentPath.substring(currentPath.lastIndexOf('/') + 1);
    
    tabs.forEach(tab => {
        const href = tab.getAttribute('href');
        // 如果是当前页面，设置为激活状态
        if ((currentPage === '' || currentPage === 'index.html') && href === 'index.html') {
            tab.classList.add('active');
        } else if (href === currentPage) {
            tab.classList.add('active');
        }
    });
            
    // 在多页面结构中，点击事件由浏览器处理页面跳转
    // 不需要手动处理内容显示和隐藏
    
    // 在当前页面加载时预加载相关音频
    if (window.audioManager) {
        // 从URL获取当前页面名称
        const currentPath = window.location.pathname;
        const currentPage = currentPath.substring(currentPath.lastIndexOf('/') + 1);
        const categoryId = currentPage.replace('.html', '') || 'index';
        
        // 预加载当前页面的音频
        if (document.getElementById(categoryId)) {
            window.audioManager.loadCategoryAudios(categoryId);
        }
    }
}

/**
 * 初始化搜索功能
 */
function initSearch() {
    const searchInput = document.getElementById('search-input');
    const searchButton = document.getElementById('search-button');
    
    // 搜索按钮点击事件
    searchButton?.addEventListener('click', performSearch);
    
    // 回车键搜索
    searchInput?.addEventListener('keyup', function(e) {
        if (e.key === 'Enter') {
            performSearch();
        }
    });
    
    // 实时搜索提示功能（可选）
    searchInput?.addEventListener('input', function() {
        const term = this.value.trim().toLowerCase();
        if (term.length >= 2) {
            // 显示快速匹配结果
            showQuickMatches(term);
        } else {
            // 隐藏快速匹配结果
            hideQuickMatches();
        }
    });
}

/**
 * 执行搜索操作
 */
function performSearch() {
    const searchInput = document.getElementById('search-input');
    const searchTerm = searchInput.value.trim().toLowerCase();
    
    if (!searchTerm) {
        // 如果搜索框为空，不执行搜索
        return;
    }
    
    // 获取所有短语项
    const phraseItems = document.querySelectorAll('.phrase-item');
    let foundCount = 0;
    let firstFoundItem = null;
    
    // 移除之前的高亮
    document.querySelectorAll('.highlight-search').forEach(el => {
        el.classList.remove('highlight-search');
    });
    
    // 搜索并高亮匹配项
    phraseItems.forEach(item => {
        const englishText = item.querySelector('.phrase-english').textContent.toLowerCase();
        const chineseText = item.querySelector('.phrase-chinese').textContent.toLowerCase();
        
        if (englishText.includes(searchTerm) || chineseText.includes(searchTerm)) {
            // 高亮匹配的短语
            item.classList.add('highlight-search');
            foundCount++;
            
            // 记录第一个匹配项
            if (!firstFoundItem) {
                firstFoundItem = item;
            }
            
            // 确保包含该短语的标签页是可见的
            const parentSection = item.closest('.content-section');
            if (parentSection && parentSection.style.display === 'none') {
                // 获取对应的标签并点击它
                const tabId = '#' + parentSection.id;
                const tab = document.querySelector(`.nav-tabs a[href="${tabId}"]`);
                if (tab) {
                    tab.click();
                }
            }
        }
    });
    
    // 如果有匹配项，滚动到第一个
    if (firstFoundItem) {
        setTimeout(() => {
            firstFoundItem.scrollIntoView({
                behavior: 'smooth',
                block: 'center'
            });
            
            // 添加闪烁动画以引起注意
            firstFoundItem.classList.add('search-flash');
            setTimeout(() => {
                firstFoundItem.classList.remove('search-flash');
            }, 2000);
        }, 300);
    }
    
    // 显示搜索结果提示
    showSearchNotification(foundCount, searchTerm);
}

/**
 * 显示搜索结果通知
 */
function showSearchNotification(count, term) {
    // 创建或获取通知元素
    let notification = document.getElementById('search-notification');
    if (!notification) {
        notification = document.createElement('div');
        notification.id = 'search-notification';
        document.body.appendChild(notification);
    }
    
    // 设置通知内容和样式
    notification.innerHTML = count > 0 
        ? `找到 ${count} 个与 "${term}" 相关的表达` 
        : `没有找到与 "${term}" 相关的表达`;
    
    notification.className = count > 0 ? 'success' : 'error';
    
    // 显示通知
    notification.style.display = 'block';
    notification.style.opacity = '1';
    
    // 3秒后隐藏
    setTimeout(() => {
        notification.style.opacity = '0';
        setTimeout(() => {
            notification.style.display = 'none';
        }, 500);
    }, 3000);
}

/**
 * 实时显示快速匹配结果
 */
function showQuickMatches(term) {
    // 实现逻辑...
}

/**
 * 隐藏快速匹配结果
 */
function hideQuickMatches() {
    // 实现逻辑...
}

/**
 * 初始化返回顶部按钮
 */
function initBackToTop() {
    const backToTopBtn = document.getElementById('back-to-top');
    
    if (!backToTopBtn) return;
    
    // 监听滚动事件
    window.addEventListener('scroll', function() {
        if (window.pageYOffset > 300) {
            backToTopBtn.classList.add('show');
        } else {
            backToTopBtn.classList.remove('show');
        }
    });
    
    // 点击返回顶部
    backToTopBtn.addEventListener('click', function(e) {
        e.preventDefault();
        window.scrollTo({
            top: 0,
            behavior: 'smooth'
        });
    });
}

/**
 * 初始化场景图表
 */
function initSceneCharts() {
    // 检测图表容器是否存在
    const treemapContainer = document.getElementById('scene-treemap');
    const pieContainer = document.getElementById('scene-pie');
    const phraseContainer = document.getElementById('popular-phrases');
    
    // 根据需要调整iframe高度
    adjustIframeHeight();
    
    // 窗口大小改变时重新调整
    window.addEventListener('resize', adjustIframeHeight);
}

/**
 * 调整iframe高度以匹配内容
 */
function adjustIframeHeight() {
    document.querySelectorAll('.chart-iframe').forEach(iframe => {
        // 为不同的图表设置合适的高度
        if (iframe.id === 'treemap-iframe') {
            iframe.style.height = '500px';
        } else if (iframe.id === 'pie-iframe') {
            iframe.style.height = '500px';
        } else if (iframe.id === 'phrases-iframe') {
            iframe.style.height = '500px';
        }
    });
}

/**
 * 更新页面生成时间
 */
function updateGenerationTime() {
    const timeElement = document.getElementById('generation-time');
    if (timeElement) {
        // 格式化当前日期
        const now = new Date();
        const year = now.getFullYear();
        const month = String(now.getMonth() + 1).padStart(2, '0');
        const day = String(now.getDate()).padStart(2, '0');
        const hours = String(now.getHours()).padStart(2, '0');
        const minutes = String(now.getMinutes()).padStart(2, '0');
        
        const formattedTime = `${year}年${month}月${day}日 ${hours}:${minutes}`;
        timeElement.textContent = formattedTime;
    }
}

/**
 * 切换场景详情
 */
function toggleSceneDetails(id) {
    const detailsElement = document.getElementById(id + '-details');
    const buttonElement = document.querySelector(`[onclick="toggleSceneDetails('${id}')"]`);
    
    if (detailsElement && buttonElement) {
        const isExpanded = detailsElement.style.display === 'block';
        
        // 切换详情可见性
        detailsElement.style.display = isExpanded ? 'none' : 'block';
        
        // 更新按钮文本
        buttonElement.innerHTML = isExpanded ? 
            '<i class="fas fa-chevron-down"></i> 查看详情' : 
            '<i class="fas fa-chevron-up"></i> 收起详情';
        
        // 如果展开，平滑滚动到详情区域
        if (!isExpanded) {
            setTimeout(() => {
                detailsElement.scrollIntoView({
                    behavior: 'smooth',
                    block: 'start'
                });
            }, 100);
        }
    }
}

// 导出到全局作用域，以便HTML内联调用
window.playAudio = playAudio;
window.toggleSceneDetails = toggleSceneDetails;